import Vue from 'vue'
import * as Constant from './constant'
import { COMMON } from './commonUtil'

const duration = 5000
const TYPE_INFO = 'info'
const TYPE_WARN = 'warning'
const TYPE_ERROR = 'error'
const TYPE_SUCCESS = 'success'

let vinstance = new Vue()

let alertUtil = {
  message: function (msg, type) {
    vinstance.$message({
      message: msg,
      duration: duration,
      type: type
    })
  },
  
  success: function (msg) {
    this.message(msg, TYPE_SUCCESS)
  },
  info: function (msg) {
    this.message(msg, TYPE_INFO)
  },
  warn: function (msg) {
    this.message(msg, TYPE_WARN)
  },
  error: function (msg) {
    this.message(msg, TYPE_ERROR)
  },
  errorDefault: function (errorResponse) {
    // var errorResStatus = errorResponse.status
    var errorResData = errorResponse.data
    var errorResDataMsg = errorResData.message
    var errorResDataDesc = errorResData.error_description

    var msg = 'error:' + errorResData.error + ';'

    if (!COMMON.isNullOrUndefined(errorResDataMsg)) {
      msg += ' message:' + errorResDataMsg + ';'
    }

    if (!COMMON.isNullOrUndefined(errorResDataDesc)) {
      msg += ' error_description:' + errorResDataDesc + ';'
    }

    this.message(msg, TYPE_ERROR)
  },
  alertResp: function (data) {
    if (data && data.data) {
      if (data.data.rtcode && data.data.rtcode === Constant.RT_SUCCESS) {
        var msg = data.data.rtmsg ? data.data.rtmsg : '操作成功!'
        this.success(msg)
      } else {
        this.error(data.data.rtmsg ? data.data.rtmsg : '操作失败!')
      }
    } else {
      this.error('返回信息异常!')
    }
  },
  closeAll: function () {
    vinstance.$message.closeAll()
  }
}

function initIns () {
  return alertUtil
}

export const ALERT = initIns()
